package vista.objetos;

import java.awt.Point;
import java.util.List;

import javax.media.opengl.GL2;

import vista.Tema;
import vista.geometria.Elipse;
import vista.paneles.hojaDibujo.UtilHojaDeDibujo;

public abstract class EstrategiaDeDistribucionDeAtributos {
	
	/**
	 * Es necesario que esté seteado el tamaño de la etiqueta de la Entidad o Relacion Graficable
	 * 
	 */
	
	public static void calcularPosicionAtributoDefault(List<AtributoGraficable> atributos, Point posicionCentral)
	{
		int alturaLabel = 30, i = 0;
		
		Elipse elipse = new Elipse(alturaLabel, atributos.size());
		
		for (AtributoGraficable atributo: atributos) 
		{	
			Point punto = elipse.getPunto(posicionCentral, i++);
			atributo.getPunto().setLocation(punto);
			atributo.inicializarPosiciones();
		}
	}
	
	protected static void dibujarAtributos (GL2 gl, List<AtributoGraficable> atributos, Point puntoCentro) 
	{
       	float[] centroEntidadMundo = UtilHojaDeDibujo.getCoordMundo(gl, puntoCentro.x, puntoCentro.y);
    
		for (AtributoGraficable atributo: atributos) 
		{
			float[] centroAtributoMundo = UtilHojaDeDibujo.getCoordMundo(gl, atributo.getPunto().x, atributo.getPunto().y);
			
			dibujarLinea(gl, centroEntidadMundo, centroAtributoMundo);
		
			atributo.dibujarse(gl);
		}
	}

	private static void dibujarLinea(GL2 gl, float[] centroEntidadMundo, float[] centroAtributoMundo)
	{
		gl.glBegin(GL2.GL_LINES);
			gl.glColor3fv(Tema.getInstancia().getLineaColor());
			gl.glVertex2f(centroEntidadMundo[0], centroEntidadMundo[1]);
			gl.glVertex2f(centroAtributoMundo[0], centroAtributoMundo[1]);
		gl.glEnd();
	}

}
